package com.turbo.cloud.starter.sequence;


/**
 * 获取唯一序列工厂方法
 *
 * @author zhangluning
 */
public interface SequenceFactory {
    /**
     * 根据指定的键 获取下一个序列
     *
     * @param redisKey 键值
     * @return 返回唯一序列
     */
    String nextValue(String redisKey);

    /**
     * 根据指定的键 获取下一个序列
     *
     * @param redisKey 键值
     * @param sequenceNoLength 序列号长度
     * @return 返回唯一序列
     */
    String nextValue(String redisKey, int sequenceNoLength);

    /**
     * 根据指定的键，获取每天的唯一序列 设置键的过期时间为 24小时
     *
     * @param redisKey 键值
     * @return 序列
     */
    String nextValueByDaily(String redisKey);

    /**
     * 根据指定的键，获取每天的唯一序列 设置键的过期时间为 24小时
     *
     * @param redisKey         键值
     * @param sequenceNoLength 序列号长度
     * @return 序列
     */
    String nextValueByDaily(String redisKey, int sequenceNoLength);
}
